package com.yuanzi.base.redis;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * hash类型缓存
 * @author chengshx
 * @date 2017年5月9日
 */
@Service
public class SetRedisService {

	private static IRedisService redisService;
	
	@Autowired
	public void setRedisService(IRedisService redisService) {
		SetRedisService.redisService = redisService;
	}
	
	/**
	 * set类型缓存
	 * @author chengshx
	 * @param clazz 实体类
	 * @param field id或其他key
	 * @param value
	 */
	public static void sadd(Class<?> clazz, String... members) {
		String key = RedisUtils.getSetKey(clazz);
		redisService.sadd(key, members);
	}
	
	/**
	 * set类型缓存
	 * @author chengshx
	 * @param className 自定义缓存
	 * @param field id或其他key
	 * @param value
	 */
	public static void sadd(String className, String... members) {
		String key = RedisUtils.getSetKey(className);
		redisService.sadd(key, members);
	}
	
	/**
	 * set成员是否存在
	 * @author chengshx
	 * @date 2017年12月25日
	 *
	 * @param clazz 实体类
	 * @param member 元素
	 * @return
	 */
	public static Boolean sismember(Class<?> clazz, String member) {
		String key = RedisUtils.getSetKey(clazz);
		return redisService.sismember(key, member);
	}
	
	/**
	 * set成员是否存在
	 * @author chengshx
	 * @date 2017年12月25日
	 *
	 * @param className 自定义缓存
	 * @param member 元素
	 * @return
	 */
	public static Boolean sismember(String className, String member) {
		String key = RedisUtils.getSetKey(className);
		return redisService.sismember(key, member);
	}
	
	/**
	 * 设置hash key过期时间
	 * @author chengshx
	 * @param clazz 实体类
	 * @param key id或其他key
	 * @param seconds 过期时间
	 */
	public static void expire(Class<?> clazz, Integer seconds) {
		String key = RedisUtils.getSetKey(clazz);
		redisService.expire(key, seconds);
	}
	
	/**
	 * 设置set key过期时间
	 * @author chengshx
	 * @param clazz 实体类
	 * @param key id或其他key
	 * @param seconds 过期时间
	 */
	public static void expire(String className, Integer seconds) {
		String key = RedisUtils.getSetKey(className);
		redisService.expire(key, seconds);
	}
	
	/**
	 * 删除set类型缓存
	 * @author chengshx
	 * @param clazz 实体类
	 */
	public static void del(Class<?> clazz) {
		String key = RedisUtils.getSetKey(clazz);
		redisService.del(key);
	}
	
	/**
	 * 删除set类型缓存
	 * @author chengshx
	 * @param className 自定义缓存
	 */
	public static void del(String className) {
		String key = RedisUtils.getSetKey(className);
		redisService.del(key);
	}
	
}
